var template={};
module=function(w)
{

	this.url="http://rustmarket.com/";  //base url
	$('head').append('<link rel="stylesheet" href="'+this.url+'module/css/style_p1.css" type="text/css" />');

	var m=this;
	m.w=w								// where append a content
	m.oto=17;
	m.pto=17;
	m.cont={};							// loaded template
	m.tpl='';							// html text
	m.TL=false;							// flag loaded template
	m.action='tour'						// action to show: tour excurs hotel map
	m.ic=false;							// loaded and compiled main template
	/// loading template
	r(this.url +'module/template/html.php',function(d){	
		m.cont = eval('('+d+')'); 
		template=m.cont;
		m.tpl=m.cont['main'];
		$(w).empty().append(m.tpl);
		m.tour=new myObj({
			name:'Tour',
			url:m.url+'module/tour',
			url_full:m.url+'module/tour_full/',
			w:'#place_to_content',
			content:m.cont['mtour'],
			short_content:m.cont['short_table'],
			f1:{name:'Город',tag:'city',type:"Tour"},
			f2:{name:'Ночи',tag:'nights',type:"Tour"},
			f3:{name:'Цена',tag:'price',type:"Tour"},
			f4:{name:'Туры',tag:'tours',type:"Tour"},
			prefix:'#tp'
		});
		/*m.tour.full=function()
		{
			
			var me=this;
			$('#td_tblcontent').empty().append(template['full']);
		}*/
		m.hotel=new myObj({
			name:'Hotel',
			url:m.url+'module/hotel',
			url_full:m.url+'module/hotel_full/',
			w:'#place_to_content',
			content:m.cont['mtour'],
			short_content:m.cont['short_table'],
			f1:{name:'Город',tag:'city',type:"Hotel"},
			f2:{name:'Рейтинг',tag:'nights',type:"Hotel"},
			f3:{name:'Цена',tag:'price',type:"Hotel"},
			f4:{name:'Гостиницы',tag:'hotels',type:"Hotel"},
			prefix:'#hp'
		});
		m.excurs=new myObj({
			name:'Excurs',
			url:m.url+'module/excurs/',
			url_full:m.url+'module/excurs_full/',
			w:'#place_to_content',
			content:m.cont['mtour'],
			short_content:m.cont['short_table'],
			f1:{name:'Город',tag:'city',type:"Excurs"},
			f2:{name:'Достопримечательности',tag:'nights',type:"Excurs"},
			f3:{name:'Цена',tag:'price',type:"Excurs"},
			f4:{name:'Экскурсии',tag:'excurs',type:"Excurs"},
			prefix:'#ep'
		});
		m.TL = true;
		eval(m.cont["script"]);
		m.navigate('#tp');
	});
	if (("onhashchange" in window) && !($.browser.msie)) {
		window.onhashchange = function() {
			m.navigate(window.location.hash);
		}
	} else {
		var prevHash = window.location.hash;
		window.setInterval(function() {
					if (window.location.hash != prevHash) {
						prevHash = window.location.hash;
						m.navigate(window.location.hash);
					}
				}, 100);
	}
	
}
module.prototype.navigate=function(hash)
{
	var m=this;
	//$('#place_to_content').empty().append("<img src='http://rustmarket.com/module/img/loader.gif'/>");
	if(hash.lastIndexOf('#tour')!=-1)
	{
		m.tour.full(hash.slice(5))
	}
	if(hash.lastIndexOf('#hotel')!=-1)
	{
		m.hotel.full(hash.slice(6))
	}
	if(hash.lastIndexOf('#excurs')!=-1)
	{
		m.excurs.full(hash.slice(7))
	}
	if(hash.lastIndexOf('#tp')!=-1)
	{
		m.action='tour';
		m.tour.p=parseInt(hash.slice(3))+1;
		if(m.tour.dl)
		{
			m.tour.go(false);
		}
		else
		{
			m.tour.init()
		}
	}
	if(hash.lastIndexOf('#hp')!=-1)
	{
		m.action='hotel';
		m.hotel.p=parseInt(hash.slice(3))+1;
		if(m.hotel.dl)
		{
			m.hotel.go(false);
		}
		else
		{
			m.hotel.init()
		}
	}
	if(hash.lastIndexOf('#ep')!=-1)
	{
		m.action='excurs';
		m.excurs.p=parseInt(hash.slice(3))+1;
		if(m.excurs.dl)
		{
			m.excurs.go(false);
		}
		else
		{
			m.excurs.init()
		}
	}	
}

myObj=function(param)
{
	var m=this;						// short this
	m.name=param.name;
	m.url=param.url;				// url to request; p - parent object
	m.url_tour=param.url_full; 		// url to request full news; p - parent object
	m.w=param.w;					// where append html
	m.dl=false;						// isDataLoaded
	m.ic=false;						// isCompiled
	m.li=[];						// listItems array of Item
	m.dt={};						// loaded data
	m.tpl=param.content;			// template['mtour'];			// html template
	m.tpl_t=param.short_content;	// template['short_table'];
	m.content="";					// content
	m.pp=0;							// pages
	m.p=0;							// page
	m.ppref=param.prefix;			// page prefix #hp #ep #tp
	m.fl={							// filters by tour
		city:[],
		nights:[],
		price:[],
		tours:[]
	}
	m.flc=new filter('city',param.f1);
	m.fln=new filter('nights',param.f2);
	m.flp=new filter('price',param.f3);
	m.lft=new listfilter('tours',param.f4);
	$(document).bind('filter_'+param.name, function(e, message) {
				data = eval('(' + message + ')');
				for (key in data) {
					if (data[key] == '*') {
						 m.fl[key]=[]
					} else {
						m.fl[key].push(data[key]);
					}
				}
				m.filterMe();
		});
	$(document).bind('filter_remove_'+param.name, function(e, message) {
				data = eval('(' + message + ')');
				for (key in data) {
					for (k in m.fl[key]) {
						if (m.fl[key][k] == data[key]) {
							m.fl[key].splice(k, 1);
						}
					}
				}
				m.filterMe();
		});
	
}
myObj.prototype.init=function()
{
	var m=this;
	r(m.url,function(d){
		m.dt =eval('('+ d+')'); 
		m.dl = true;
		m.compile();
	});
}
myObj.prototype.compile=function()
{
	var m=this;
	if(m.ic)
	{
		m.appendTo(m.w);
	}
	else
	{
		var i = 0;
		for (key in m.dt)
		{
			//Creating items
			m.li.push(new Item(m.dt[key],m.name));
			//searching cities in data
			for (var c = 0; c < m.dt[key].city.length; c++) {
				var f = 0;
				for (var j = 0; j < m.flc.data.length; j++) {
					if (m.flc.data[j] == m.dt[key].city[c]) {
						f = 1;
					}
				}
				if (f == 0) {
					m.flc.data.push(m.dt[key].city[c]);
				}
			}
			//searching num days
			var f = 0;
			for (var j = 0; j < m.fln.data.length; j++) {
				if (m.fln.data[j] == m.dt[key].nights) {
					f = 1;
				}
			}
			if (f == 0) {
				m.fln.data.push(m.dt[key].nights);
			}
			i++;
			m.lft.data[key]=m.dt[key].name;
		}
		m.pp=Math.ceil(m.li.length/8);			// num pages
		//appending tpl to stage
		$(m.w).empty().append(m.tpl);
		// creating filters
		
		m.flp.data=['0-500','500-1000','1000-1500','1500-2000','2000'];	// set the price filter

		m.flc.appendTo('#fltr_city');
		m.fln.appendTo('#fltr_nights');
		m.flp.appendTo('#fltr_price');
		m.lft.appendTo('#rrr3');
		m.p=1;
		m.content=$(m.w).html();
		m.go(false);
	}
}
myObj.prototype.appendTo=function(w)
{
	var m=this;
	$(w).empty().append(m.content);
}
myObj.prototype.go=function(where)
{
	var m=this;
	
	if((m.p<m.pp-1)&&where)
	{
		m.p++;
	}
	else if(m.p>0&&!where)
	{
		m.p--;
	}
	else
	{
		return false;	
	}
	$('#td_tblcontent').empty().append(m.tpl_t);
	//appending events to prev ornext pages
	$('.bott_previous_prosmotr').click(function() {
		console.log(false);
		m.go(false);
		
	});
	$('.bott_next_prosmotr').click(function() {
		console.log(true);
		m.go(true);
	});
	window.location.href=m.ppref+m.p;
	$('#zifra').html('<span>'+(m.p+1)+'</span><span> из '+m.pp+'</span>');
	var i=m.p*8;
	var f=0;
	var k=1;
	while(k<=8&&f<m.li.length)
	{
		if(m.li[f].fs)		
		{
			
			if(f>=i)
			{
				m.li[f].show("#m"+k);
				k++
			}
			
		}
		f++;
	}

}

myObj.prototype.filterMe=function()
{
	var me=this;
	var ppp=1;
	for(key in me.li)
	{
		me.li[key].fs=true;
	}
	for(i=1;i<=8;i++)
	{
		$('#m'+i).empty();
	}
	for (key in me.li) {
		var f=0;
		// filter by city
		for(k in me.fl.city)
		{
			for(d in me.li[key].city)
			{
				if(me.li[key].city[d]==me.fl.city[k])
				{
					f++;
				}
			}
		}
		if ((f == 0) && (me.fl.city.length != 0)) {
			me.li[key].fs=false;
		}
		f=0;
		// filter by nights
		for(k in me.fl.nights)
		{
			if(me.li[key].nights==me.fl.nights[k])
			{
				f++;
			}
		}
		if ((f == 0) && (me.fl.nights.length != 0)) {
			me.li[key].fs=false;
		}
		f=0;
		for(k in me.fl.price)
		{
			
			if(me.fl.price=='0-500')
			{
			
				if((me.li[key].minp)<=500)
				{
					f++;
				}
			}
			if(me.fl.price=='500-1000')
			{
				if(me.li[key].minp>=500 && me.li[key].minp<=1000)
				{
					f++;
				}
			}
			if(me.fl.price=='1000-1500')
			{
				if(me.li[key].minp>=1000 && me.li[key].minp<=1500)
				{
					f++;
				}
			}
			if(me.fl.price=='1500-2000')
			{
				if(me.li[key].minp>=1500 && me.li[key].minp<=2000)
				{
					f++;
				}
			}
			if(me.fl.price=='2000')
			{
				if(me.li[key].minp>=2000)
				{
					f++;
				}
			}
		}
		if ((f == 0) && (me.fl.price.length != 0)) {
			me.li[key].fs=false;
		}
	}
	for(key in me.li)
	{
		if(me.li[key].fs==true)
		{
			ppp++;
		}
	}
	me.p = 1;
	me.pp=Math.ceil(ppp/8);
	me.go(false);
}
myObj.prototype.full=function(id)
{
	$('#td_tblcontent').empty().append("<img src='http://rustmarket.com/module/img/loader.gif'/>");

	var me=this;
	var f=0;
	while(me.li[f].id!=id&&f<me.li.length){f++};
	if(f<me.li.length)
	{
		if(me.li[f].icf)
		{
			me.li[f].f_show();
		}
		else
		{
			r(me.url_tour+id,function(d){
				var dt =eval('('+ d+')'); 
				me.li[f].fdt = dt;
				me.li[f].f_show();
			});
		}
	}

}



/*Hotel=function(w,p)
{
	var m=this;						// short this
	m.url=p.url+'module/hotel/';		// url to request; p - parent object
	m.url_tour=p.url+'/module/hotel_full/'; // url to request full news; p - parent object
	m.w=w;							// where append html
	m.dl=false;						// isDataLoaded
	m.ic=false;						// isCompiled
	m.li=[];						// listItems array of Item
	m.dt={};						// loaded data
	m.tpl=p.template['mtour'];			// html template
	m.tpl_t=template['short_table'];
	m.content="";					// content
	m.pp=0;							// pages
	m.p=0;							// page
	m.fl={							// filters by tour
		city:[],
		nights:[],
		price:[],
		tours:[]
	}
	m.flc=new filter('city');
	m.fln=new filter('nights');
	m.flp=new filter('price');
	m.lft=new listfilter('tours');
	$(document).bind('filter_Hotel', function(e, message) {
				data = eval('(' + message + ')');
				for (key in data) {
					if (data[key] == '*') {
						
						 m.fl[key]=[]
					} else {
						m.fl[key].push(data[key]);
					}
				}
				filterMe(m);
		});
	$(document).bind('filter_remove_Hotel', function(e, message) {
				data = eval('(' + message + ')');
				for (key in data) {
					for (k in m.fl[key]) {
						if (m.fl[key][k] == data[key]) {
							m.fl[key].splice(k, 1);
						}
					}
				}
				filterMe(m);
		});
}
Hotel.prototype.init=function()
{
	var m=this;
	r(m.url,function(d){
		m.dt =eval('('+ d+')'); 
		m.dl = true;
		m.compile();
	});
	
}
Hotel.prototype.compile=function()
{
	var m=this;
	if(m.ic)
	{
		m.appendTo(m.w);
	}
	else
	{
		compile(m,'Hotel');
		m.prev();
	}
}
Hotel.prototype.appendTo=function(w)
{
	var m=this;
	$(w).empty().append(m.content);
}
Hotel.prototype.next=function()
{
	var m=this;
	$('#td_tblcontent').empty().append(m.tpl_t);
	//appending events to prev ornext pages
		$('.bott_previous_prosmotr').click(function() {
			m.prev();
		});
		$('.bott_next_prosmotr').click(function() {
			m.next();
		});
	if(m.p<m.pp-1)
	{
		m.p++;
		window.location.href='#hp'+m.p;
		$('#zifra').html('<span>'+(m.p+1)+'</span><span>из '+m.pp+'</span>');
		var i=m.p*8;
		var f=0;
		var k=1;
		while(k<=8&&f<m.li.length)
		{
			if(m.li[f].fs)		
			{
				
				if(f>=i)
				{
					m.li[f].show("#m"+k);
					k++
				}
				
			}
			f++;
		}
	}
}
Hotel.prototype.prev=function()
{
	var m=this;
	$('#td_tblcontent').empty().append(m.tpl_t);
	//appending events to prev ornext pages
		$('.bott_previous_prosmotr').click(function() {
			m.prev();
		});
		$('.bott_next_prosmotr').click(function() {
			m.next();
		});
	if(m.p>0)
	{
		m.p--;
		window.location.href='#hp'+m.p;
		$('#zifra').html('<span>'+(m.p+1)+'</span><span>из '+m.pp+'</span>');
		var i=m.p*8;
		var f=0;
		var k=1;
		while(k<=8&&f<m.li.length)
		{
			if(m.li[f].fs)		
			{
				if(f>=i)
				{
					m.li[f].show("#m"+k);
					k++
				}
			}
			f++;
		}
	}
}

Hotel.prototype.full=function(id)
{
	$('#td_tblcontent').empty().append("<img src='http://rustmarket.com/module/img/loader.gif'/>");

	var me=this;
	var f=0;
	while(me.li[f].id!=id&&f<me.li.length){f++};
	if(f<me.li.length)
	{
		if(me.li[f].icf)
		{
			me.li[f].f_show();
		}
		else
		{
			r(me.url_tour+id,function(d){
				var dt =eval('('+ d+')'); 
				me.li[f].fdt = dt;
				me.li[f].f_show();
			});
		}
	}

}
// module tour
Tour=function(w,p)
{
	var m=this;						// short this
	m.url=p.url+'module/tour/';		// url to request; p - parent object
	m.url_tour=p.url+'/module/tour_full/'; // url to request full news; p - parent object
	m.w=w;							// where append html
	m.dl=false;						// isDataLoaded
	m.ic=false;						// isCompiled
	m.li=[];						// listItems array of Item
	m.dt={};						// loaded data
	m.tpl=template['mtour'];			// html template
	m.tpl_t=template['short_table'];
	m.content="";					// content
	m.pp=0;							// pages
	m.p=0;							// page
	m.fl={							// filters by tour
		city:[],
		nights:[],
		price:[],
		tours:[]
	}
	m.flc=new filter('city');
	m.fln=new filter('nights');
	m.flp=new filter('price');
	m.lft=new listfilter('tours');
	$(document).bind('filter_Tour', function(e, message) {
				data = eval('(' + message + ')');
				for (key in data) {
					if (data[key] == '*') {
						
						 m.fl[key]=[]
					} else {
						m.fl[key].push(data[key]);
					}
				}
				filterMe(m);
		});
	$(document).bind('filter_remove_Tour', function(e, message) {
				data = eval('(' + message + ')');
				for (key in data) {
					for (k in m.fl[key]) {
						if (m.fl[key][k] == data[key]) {
							m.fl[key].splice(k, 1);
						}
					}
				}
				filterMe(m);
		});
}
Tour.prototype.init=function()
{
	var m=this;
	r(m.url,function(d){
		m.dt =eval('('+ d+')'); 
		m.dl = true;
		m.compile();
	});
	
}

Tour.prototype.compile=function()
{
	var m=this;
	if(m.ic)
	{
		m.appendTo(m.w);
	}
	else
	{
		compile(m,'Tour');
		m.prev();
	}
}
Tour.prototype.appendTo=function(w)
{
	var m=this;
	$(w).empty().append(m.content);
}
Tour.prototype.next=function()
{
	var m=this;
	$('#td_tblcontent').empty().append(m.tpl_t);
	//appending events to prev ornext pages
		$('.bott_previous_prosmotr').click(function() {
			m.prev();
		});
		$('.bott_next_prosmotr').click(function() {
			m.next();
		});
	if(m.p<m.pp-1)
	{
		m.p++;
		window.location.href='#tp'+m.p;
		$('#zifra').html('<span>'+(m.p+1)+'</span><span>из '+m.pp+'</span>');
		var i=m.p*8;
		var f=0;
		var k=1;
		while(k<=8&&f<m.li.length)
		{
			if(m.li[f].fs)		
			{
				
				if(f>=i)
				{
					m.li[f].show("#m"+k);
					k++
				}
				
			}
			f++;
		}
	}
}
Tour.prototype.prev=function()
{
	var m=this;
	$('#td_tblcontent').empty().append(m.tpl_t);
	//appending events to prev ornext pages
		$('.bott_previous_prosmotr').click(function() {
			m.prev();
		});
		$('.bott_next_prosmotr').click(function() {
			m.next();
		});
	if(m.p>0)
	{
		m.p--;
		window.location.href='#tp'+m.p;
		$('#zifra').html('<span>'+(m.p+1)+'</span><span>из '+m.pp+'</span>');
		var i=m.p*8;
		var f=0;
		var k=1;
		while(k<=8&&f<m.li.length)
		{
			if(m.li[f].fs)		
			{
				if(f>=i)
				{
					m.li[f].show("#m"+k);
					k++
				}
			}
			f++;
		}
	}
}

Tour*/
// const records
/**
 * Create item
 * Vars: 	id - service
 * 			sh - short content
 * 			fl - full content
 * 			ic - is compiled( maybe don't need)
 * 			fs - show after filtering 
 * 	@return float | object
 * */ 
Item=function(dt,type){
	var m=this;
	m.type=type;				//type of short item 1 - tour; 2 - hotel; 3 - excurs;
	m.dt=dt;					// item object short data
	m.fdt={} 					// place to full object data
	
	
	switch(type)
	{
		case "Tour": 
			m.ftpl=template['full'];	// html short template
			m.tpl=template['short'];	// html short template
			m.pref='#tour';
		break;
		case "Hotel":
			m.ftpl=template['full_hotel'];	// html short template
			m.tpl=template['short_hotel'];	// html short template
			m.pref='#hotel';
		break;
		case "Excurs": 
			m.ftpl=template['full_excurs'];	// html short template
			m.tpl=template['short_excurs'];	// html short template
			m.pref='#excurs';
		break;

	}
	m.id=dt.id;					// Id of service 
	m.name=dt.name;
	m.minp=m.dt.min_p!=null?m.dt.min_p:'?';
	m.maxp=m.dt.max_p!=null?m.dt.max_p:'?';
	m.fotos=dt.fotos;
	m.nights=dt.nights;
	m.city=dt.city;
	m.sh="";			//short content
	m.fl="";			//full content
	m.ics=false;		//is short compiled
	m.icf=false;		//is full compiled
	m.fs=true;			//flag to show
};
Item.prototype.c_short=function(){
	var m=this;
	m.ics=true;
	m.sh=$(m.tpl);
	$(m.sh)
	.click(function(){hash(m.pref+m.id);})
	.find('.timg')
		.append('<img src="'+m.fotos[0]+'" width="84" height="71" alt="foto" />')
	.end()
	.find('p.name')
		.append(m.name)
	.end()
	.find('.night')
		.append(m.nights)
	.end()
	.find('.city')
		.append(m.city.join(', '))
	.end()
	.find('.price_txt')
		.append('<span>ЦЕНА от '+m.minp+' до '+m.maxp+'</span>');
}
Item.prototype.f_show=function()
{
	switch(this.type)
	{
		case 'Tour':
		if(!this.icf)
			{
				var m=this;
				this.fl=$(this.ftpl);
				$(m.fl)
					.find('#vlist_hotels')
					.append(new vlist('Hotel',m.fdt['hotel']))
					.end()
					.find('#vlist_hotels')
					.append(new vlist('Excurs',m.fdt['excurs']))
					.end()
					.find('#opisanie p')
					.append(m.fdt['description']);
				this.icf=true;
			}
		break;
		case 'Hotel':
			var m=this;
			this.fl=$(this.ftpl);
			$(m.fl)			
				.append("<p>"+m.fdt['description']+"</p>")
				.append("<p>"+m.fdt['place']+"</p>")
				.append("<p>"+m.fdt['in_hotel']+"</p>")
				.append("<p>"+m.fdt['in_h_ico']+"</p>")
				.append("<p>"+m.fdt['in_room']+"</p>")
				.append("<p>"+m.fdt['in_r_ico']+"</p>")
			this.icf=true;
		break;
	}
	$('#td_tblcontent').empty().append(this.fl);
}
Item.prototype.show=function(where)
{
	if(this.fs)
	{
		if(this.content==null)
		{
			this.c_short();
		}
		$(where).empty().append(this.sh);
	}
	
};
// filters
filter=function(name,obj){
	this.name=name;
	this.obj=obj;
	this.data=[];
	this.content=$('<div class="rrr1"><div  class=filtr1></div></div>');
	this.flag=false;
	//this.INIT();
};
filter.prototype.INIT=function()
{
	var me=this;
	me.flag=true;
	me.data=me.data.sort();
	for(key in me.data)
	{
		$('.filtr1',me.content).append("<div class='item'>"+me.data[key]+"</div>");
	}
	$('.item',me.content).click(function(){
		if($(this).hasClass('highlight'))
		{
			$(document).trigger('filter_remove_'+me.obj.type,'{"'+me.name+'":"'+$(this).html()+'"}');
			$(this).removeClass('highlight');
		}
		else
		{
			$(document).trigger('filter_'+me.obj.type,'{"'+me.name+'":"'+$(this).html()+'"}');
			$(this).addClass('highlight');
		}
	});
};
filter.prototype.appendTo=function(where)
{
	this.where=where;
	if(!this.flag)
	{
		this.INIT()
	}
	var m=this;
	if($(where).hasClass('hide'))
	{
		$(m.content).css('display','none');
	}
	$(where).parent('div').append(m.content);
};

listfilter=function(name,obj)
{
	this.name=name;
	this.data=[];
	this.content=$('<div id=l_'+name+'></div>');
	this.flag=false;
};

listfilter.prototype.INIT=function()
{
	var me=this;
	me.flag=true;
	$(me.content).append('<input type=text id="poisk_filtr"  class="filterList poisk_filtr"/><div class="list_f_div filtr1" id="result_list"><ul></ul></div>');
	for(k in me.data)
	{
		$('.list_f_div ul',me.content).append('<li mid='+k+' onClick="window.location.hash=\'#tour'+k+'\'" >'+me.data[k]+' / '+k+'</li>');
	}
	$('.list_f_div li',me.content).each(function(){
			$(this).click(function(){
				$(document).trigger('full',$(this).attr('mid'));
			})
			
		});
	$('input.filterList',me.content).keyup(function(){
		var val=$(this).val();
		$(this).parent('div').find('li').each(function(){
			if($(this).html().toUpperCase().indexOf(val.toUpperCase())==-1)
			{
				$(this).hide();
			}
			else
			{
				$(this).show();
			}
		});
	});
};
listfilter.prototype.appendTo=function(where)
{
	this.where=where;
	if(!this.flag)
	{
		this.INIT()
	}
	$(where).append(this.content);
	
};
vlist=function(name,data)
{
	me=this;
	this.data=data;
	
	this.content=$(template['vlist']);
	$(this.content).find('.tabl_name').append(name).end().find('div#div_animat_hotls').each(function(){
		var i=0;
		var temp='';
		var fc=1;
		for(key in me.data)
		{
			if(i==0)
			{
				temp+='<ul>';
				fc=0;
			}
			temp+="<li>"+me.data[key]+"</li>";
			i++;
			if(i>=6)
			{
				temp+="</ul>";
				i=0;
				fc=1;
			}
		}
		if(fc==0)
		{
			temp+="</ul>";
		}
		
		$(this).append(temp);
	}).end();
	return this.content;
}
vlist.prototype.appendTo=function(where)
{
	$(where).append(this.content);
}



// another utils

function doRequest(url,oncomplete) {
var XHR = window.XDomainRequest || window.XMLHttpRequest
var xhr = new XHR();
	xhr.open('GET', url, true);	
	xhr.onload = function() {
		oncomplete(xhr.responseText)
	}
	xhr.onerror = function() {
		alert("Error")
	}
	xhr.send()
}
function r(url,oncomplete) {
	try 
	{
		doRequest(url,oncomplete)
	} 
	catch (e) 
	{
		alert("К сожалению Ваш браузер не может отобразить этот модуль. Используйте Google Chrome.")
	}
}
function hash(url)
{
	window.location.hash=url;
}